#include "features_def.hpp"
#include "features_impl.hpp"
#include "gmm_def.hpp"
#include "gmm_impl.hpp"

inline
multi_action::multi_action(const std::string in_Spath, 
			   const std::string in_Mpath, 
			   const std::string in_Spath_mask, 
			   const std::string in_Mpath_mask,
   			   const std::string in_actionNames,  
			   const uword in_col, 
			   const uword in_row,
			   const int in_run
)
:single_path(in_Spath), multi_path(in_Mpath), single_path_mask(in_Spath_mask), multi_path_mask(in_Mpath_mask), actionNames(in_actionNames), col(in_col), row(in_row), run (in_run)
{
  
  actions.load( actionNames );  //actions.print("All actions");
   //Only Run once
  //create_data_list();
  
  
  
}


inline
void
multi_action::features_train( field<string> peo_train)
{
  features calc_feat(single_path, multi_path, single_path_mask, multi_path_mask,  actions,  col,row);
  calc_feat.features_per_action_training(peo_train, run);
}


inline
void
multi_action::features_multitest(field<string> peo_test)
{
 features calc_feat(single_path, multi_path, single_path_mask, multi_path_mask, actions,  col,row);
 calc_feat.feature_multi_action( peo_test, run ); 
}

inline
void
multi_action::train_gmm_model(int NCent)
{
  gmm_model gmm_model( NCent,actions );
  gmm_model.create_gmm_action( run );
  
}

inline
void
multi_action::test_gmm_model(int NCent, field<string> peo_test, int L)
{
  gmm_model gmm_model(NCent,actions );
  gmm_model.gmm_multi_action( peo_test, run, L );
  
}

/*
inline
void
multi_action::features_one_video(std::string one_video)
{ 
  features calc_feat(single_path, multi_path, actions,  col,row);
  calc_feat.feature_video(one_video);

}

*/